/*
	MIDAS Context Based Routing
	cbr_types.h
	Copyright (c) 2007 Radoslaw Olgierd Schoeneich
	MEAG IT PW
*/

#ifndef cbr_types_h_
#define cbr_types_h_

#include <string>
#include <set>
#include "cbr_object.h"

typedef std::string cbr_Concept;
typedef std::set<cbr_Concept> cbr_ConceptsSet;

typedef int32_t cbr_ID;
#define CBR_ID_SIZE (sizeof(cbr_ID))

#define CBR_ID_LOCAL (-2)

typedef unsigned int u_int32_t;
typedef u_int32_t macaddr_t;

/**
 * Interface for generic application-level data unit. It should know its
 * size and how to make itself persistent (based on AppData class from ns2).
 */

class AppData {
public:
	AppData() { }
	virtual ~AppData() {}

	// The following two methods MUST be rewrited for EVERY derived classes
	virtual int size() const { return sizeof(AppData); }
	virtual AppData* copy() = 0;
};

#endif	// cbr_types_h_
